本发明公开一种将数据中心内的多个服务器联网在一起的方法。该方法包括通过提供目的地服务器地址作为平坦地址来定址供传递到目的地服务器的数据分组的步骤。该方法还包括获取将分组路由到目的地服务器所需的路由信息的步骤。该路由信息可以从服务于多个服务器的目录服务获取。一旦获取路由信息,就可以根据目的地服务器的平坦地址和从目录服务获取的路由信息来将数据分组路由到目的地服务器。
1.一种将数据中心内的多个服务器(210)联网在一起的方法,所述方法包括以下步骤:定址供传递到目的地服务器(210)的数据分组(400),所述定址步骤包括提供目的地服务器地址作为平坦地址的步骤;从服务于所述多个服务器的目录服务(302)获取将所述分组路由到所述目的地服务器所需的路由信息,来自所述目录服务的所述路由信息包括负责处理所述目的地服务器的平坦地址的服务器地址列表,以及交换机地址列表,所述数据分组要通过从所述交换机列表中选择的一个或多个交换机被路由,其中从所述目录服务获取路由信息的步骤包括获取所述目的地服务器的架顶式交换机和所述数据分组经过的一个或多个中间交换机中的至少一个的地址的步骤;以及根据所述目的地服务器的平坦地址和从所述目录服务(302)获取的路由信息来将所述数据分组(400)路由到所述目的地服务器。
2.如权利要求1所述的方法,其特征在于,将所述数据分组路由到所述目的地服务器的步骤包括封装所述数据分组以及修改其首部的步骤中的至少一个,所述封装和修改步骤由用于路由所述数据分组的第一服务器或交换机执行。
3.如权利要求1所述的方法,其特征在于,还包括使用Valiant负载平衡来确定由所述目录服务提供的路由信息的步骤。
4.如权利要求3所述的方法,其特征在于,还包括在所述目录服务中存储负责处理每一个虚拟IP地址的服务器的地址以及连接那些服务器中的每一个的架顶式交换机的地址的列表的步骤。
5.如权利要求1所述的方法,其特征在于,还包括从由所述目录服务提供的替换组件中选择以下组件的步骤:一个或多个交换机,其中从所述一个或多个交换机弹出所述数据分组;以及接收所述数据分组的服务器。
6.一种用于允许数据中心中的服务器之间的通信的方法,包括:将数据中心内的用于运行客户机应用程序的多个服务器连接到多个交换机和链路;由服务器上的应用程序创建数据分组,所述数据分组包括预期用于另一服务器或应用程序的信息,并用指示目的地服务器或应用程序的身份的地址来定址所述分组;由服务器和交换机中的一个使用目录服务来处理所述数据分组,以便将预期的服务器或应用程序的身份转换成能够处理所述数据分组的服务器的一个或多个地址以及跨所述多个交换机将所述分组定向到那些一个或多个地址所需的信息;以及向上或向下更改所述目录服务中被列为能够处理被定址到应用程序或服务器的数据分组的服务器的数量以更改可用于处理预期用于服务器或应用程序的分组的数据中心的容量。
7.如权利要求6所述的方法,其特征在于,还包括由其他服务器而非专用负载平衡器来将请求或数据中心工作负载分发给各服务器的步骤。
8.如权利要求6所述的方法,其特征在于,还包括通过以下步骤来增加网络的容量以便承载附加通信的步骤:逻辑上将所述多个交换机安排成两个或更多层或类型的交换机;向所述多个交换机和链路添加交换机和链路以便增加一个或多个层的宽度;以及更改所述网络的控制平面或由所述目录服务返回的路由信息,以使得所述网络所承载的数据分组散布在现有链路和所添加的链路上。
9.如权利要求8所述的方法,其特征在于,还包括以下步骤:由控制平面和/或目录服务通过重定向数据分组来对包括n个交换机或链路的层中的链路或交换机的故障作出反应以便避开发生故障的交换机或链路,以使得所述网络的容量降低其在所述故障之前的容量的1/n因子。
10.如权利要求8所述的方法,其特征在于,还包括通过选择交换机或服务器来将数据分组散布在现有链路和新链路上的步骤,其中从所述交换机或服务器弹出所述数据分组。
11.一种数据中心体系结构,包括:所述数据中心内的用于运行客户机应用程序的多个联网服务器,所述多个联网服务器中的第一服务器上的应用程序创建去往所述多个联网服务器中的目的地服务器的数据分组,所述应用程序用IP地址标识所述目的地服务器;用于将所述数据分组从所述第一服务器路由到所述目的地服务器的交换机的网络;以及用于存储路由信息的目录服务,所述路由信息用于来将所述数据分组从所述第一服务器路由到所述目的地服务器,所述目录服务中的所述路由信息包括负责处理所述目的地服务器的IP地址的服务器地址列表,以及交换机地址列表,所述数据分组要通过从所述交换机列表中选择的一个或多个交换机被路由,所述目录服务中被列为能够处理被定址到应用程序或服务器的数据分组的服务器的数量被向上或向下更改,以更改可用于处理预期用于服务器或应用程序的分组的数据中心的容量。
12.如权利要求11所述的数据中心体系结构,其特征在于,所述目录服务将所述路由信息传送给所述第一服务器。
13.如权利要求11所述的数据中心体系结构,其特征在于,当服务器不提供显式路由指令时,所述目录服务将所述路由信息传送给来自所述服务器的数据分组所采用的路径上的交换机。
14.如权利要求11所述的数据中心体系结构,其特征在于,所述交换机的网络由层2以太网交换机组成。
15.如权利要求11所述的数据中心体系结构,其特征在于,所述IP地址和目录服务允许数据网络在不增加所述交换机中的转发表的大小的情况下横向扩展。
16.如权利要求11所述的数据中心体系结构,其特征在于,还包括包含所述目录服务的控制平面,所述目录服务存储负责处理虚拟IP地址的服务器的地址和连接那些服务器中的每一个的架顶式交换机的地址的列表。
17.如权利要求16所述的数据中心体系结构,其特征在于,还包括查询所述目录服务的代理和用于封装所述数据分组的封装器,其中所述目录服务还存储交换机地址的列表,所述代理和封装器中的至少一个从所述交换机地址的列表中随机挑选交换机,其中从所述交换机弹出所述数据分组。
18.如权利要求11所述的数据中心体系结构,其特征在于,被用作一个或多个中间物的一个或多个服务器替换专用负载平衡器。相关申请的交叉引用本申请要求2008年6月9日提交的授予Maltz等人的题为“DATAxa0CENTERxa0WITHOUTxa0STRUCTURALxa0BOTTLENECKS(没有结构化瓶颈的数据中心)”的临时专利申请No.61/060,040的优先权,该申请的全部内容通过引用结合于此。背景当今的数据中心中主存的应用程序遭受资源内部分割、刚性、以及由连接数据中心的服务器的网络的体系结构施加的带宽制约。当前常规体系结构将web服务静态地映射到以太网VLAN,由于控制平面开销,每一个VLAN在大小方面限制于几百个服务器。经由昂贵的自定义硬件和专有软件来实现用于跨VLAN分散流量的IP路由器和用于跨服务器在VLAN内分散请求的负载平衡器。如此,昂贵的IP路由器端口变成任何机架-到任何机架服务器连接的瓶颈,如此,限制了许多数据密集型应用程序(例如,数据挖掘、映射/降低计算、分布式文件系统、团(blob)存储)的流量。此外,常规体系结构将流量集中于必须常常升级和替换以跟上需求的一些硬件中—直接抵触数据中心的其余部分的流行原则(流行原则为横向扩展(添加更多便宜的组件)而并非纵向扩展(向少量的昂贵的组件添加更多能力和复杂性))的方法。将流量集中于小数量的网络路由器和交换机的做法还将网络置于发生故障和停机的风险中,因为这种小数量的组件的故障击败嵌入到系统中的冗余,并导致停机。现在存在在极低的端口成本下有非常高的端口速度的商用交换硬件可用,使得现在是重新设计数据中心网络基础结构的恰好时机。数据中心包括服务器和网络组件,其中,组件之间的距离通常小于一毫秒的光速传播时间(即,以1Gbps速度或更大的速度,越过少量的交换机)。基础结构的服务器部分现在就商品化而言太遥远—高端企业级服务器已经被大量的低成本PC所替代。分布式计算和系统管理软件中的新发明已经使个体服务器的不可靠性被系统作为整体的聚合的可靠性所掩盖。运行的主题是由PC商品化的经济因素进行驱动的“横向扩展代替纵向扩展”。商用部件的特征在于:广泛的可用性、标准化、以及用于增大的能力的驱动程序(例如,1Gbps、10Gbps技术已可用,100Gbps技术现在是新兴的)。数据中心基础结构的网络部分为商品化呈现下一新领域。需要互连的服务器的数量的增大已经如此延伸了企业网络解决方案的限制,以至于当前体系结构类似最初旨在在数量级较小的企业网络中工作的协议的一系列修补和替代方法。现在将参考图1讲述常规数据中心的某些挑战和要求,图1示出了从推荐的源获取的数据中心的常规体系结构100。参见“Ciscoxa0systems:Dataxa0center:Loadxa0balancingxa0dataxa0centerxa0services,2004(思科系统:数据中心:负载平衡数据中心服务,2004)”,其藉此通过引用整体结合于此。多个应用程序在数据中心内运行,但是,通常每一应用程序都被主存在其自己的一组(潜在可能的虚拟)服务器机器102中,单个组织拥有并控制数据中心内的活动。来自因特网104的请求通常被发送到公开可见和可路由的虚拟IP地址(VIP),并且有与在数据中心中运行的每一应用程序相关联的一个或多个VIP。从因特网到达的请求,基于目的VIP地址,通过边界路由器(BR)和访问路由器(AR)被IP(层3)路由到层2域。VIP被配置到连接到顶交换机(S)的两个负载平衡器(LB)上,并使用复杂的机制来确保如果一个负载平衡器失败,则其他负载平衡器拾起流量。参见由E.R.Hinden所著的“Virtualxa0routerxa0redundancyxa0protocol(虚拟路由器冗余协议:VRRP)”,该申请通过引用整体结合于此。对于每一个VIP,负载平衡器被配置成具有直接IP地址列表(DIP),直接IP地址是负载平衡器下面的机架中的物理服务器102的私有和内部地址。此DIP列表定义可以处理到该VIP的请求的服务器池,负载平衡器跨池中的DIP分散请求。随着数据中心中所需的服务器的数量增长,向层2域中添加附加成对的交换机和相关联机架,如图所示。由于广播和控制平面流量的开销,层2子网在大小方面被限制于几百个服务器,如此,在层2交换机上配置了VLAN,以将域分割为多个层2子网,每个VLAN一个子网。当层2域最终达到与大小大约为4000个服务器的大以太网域相关联的限制(例如,VLAN耗尽、广播/控制流量)时,创建附加层2域,并将其连接到其他访问路由器对。常规方法具有下列问题:资源的分段:诸如目的NAT(或半NAT)和直接服务器返回之类的流行的负载平衡技术,要求VIP的池中的所有DIP都位于同一层2域中。参见由C.Kopparapu所著的“Loadxa0Balancingxa0Servers,Firewalls,andxa0Caches(负载平衡服务器、防火墙和高速缓存)”,其藉此通过引用整体结合于此。此约束意味着,如果应用程序增长并要求更多服务器,则它不能使用其他层2域中的可用服务器—最终导致对资源的分段和利用不足。经由源NAT(或完全NAT)的负载平衡允许服务器跨层2域分散,但是,随后服务器从来不看客户机IP,这常常是无法接受的,因为服务器需要将客户机IP记入日志以便进行规章顺应性和数据挖掘。差的服务器到服务器连接:网络的分层本性意味着,为使不同的层2域中的服务器进行通信,流量必须经过网络的层3部分。由于层3端口比层2端口昂贵得多,因此这些链路通常被过量预订(例如,访问路由器和边界路由器之间的链路的容量小于连接到访问路由器的服务器的输出容量的总和)。结果是,数据中心的不同部分中的服务器之间可用的带宽会是十分有限的。这将产生严重的全局优化问题,因为必须小心翼翼地安置属于所有应用程序的所有服务器,以确保其流量的总和不会使任何一个网络链路饱和,并且在实践中,在应用程序之间实现这一水平的协调是困难的。在服务器之间缺乏足够的容量还将服务器的池分段。例如,当在数据中心中运行的应用程序需要更多服务器来处理其工作负载时,位于数据中心中的别处的未使用的服务器无法投入服务中—如果在它们和现有应用程序服务器之间没有足够容量的话。纵向扩展,而非横向扩展的专有硬件:常规体系结构中的负载平衡器被成对地用于1+1弹性配置中。当负载对于负载平衡器来说变得太大时,操作员将现有负载平衡器替换为具有更大的容量的新的对,而不可能添加单个负载平衡器来获得更大的容量。概述本系统涉及用于横向扩展数据中心联网的简单设计。该系统设计使用简单的网格类体系结构、商用交换机、对控制平面的修改,以控制协议开销以及通过多径路由来支持灵活的流量工程。它将负载平衡的功能解聚为一组标准服务器,结果,负载平衡服务器硬件可以在数据中心中的机架之间分布,从而导致更大的灵活性和较少的分段。该体系结构创建巨大且灵活的交换域、支持任何服务器/任何服务、全互联灵活性、以及低成本的未严加管制的服务器容量。在各实施例中,本发明的系统执行一种将数据中心内的多个服务器联网在一起的方法。该方法包括通过提供目的地服务器地址作为平坦地址来定址供传递到目的地服务器的数据分组的步骤。平坦地址是仅指示服务器或目的地的身份而不是将服务器或目的地连接到网络的位置的地址。该方法还包括获取将分组路由到目的地服务器所需的路由信息的步骤。该路由信息可以从服务于多个服务器的目录服务获取。一旦获取路由信息,就可以根据目的地服务器的平坦地址和从目录服务获取的路由信息来将数据分组路由到目的地服务器。与常规体系结构完全不同,当前体系结构符合下列挑战:任何地方的布局:该体系结构允许数据中心中的任何地方的任何服务器是任何VIP背后的服务器池的一部分,以便服务器池可以动态地收缩或扩展。即,服务器以及每一VIP背后的DIP可以被置于数据中心中的任何地方。服务器到服务器带宽:许多应用程序要求数据中心内的大量的计算,如此,该体系结构优化数据中心中的每对服务器之间的带宽,而不管它们所在的位置。横向扩展的商用硬件:随着需要更大的容量,本系统使得添加更多单个组件比用较新且较高容量模型替换现有组件更加容易。这要求该体系结构支持其中所有组件都是活动的弹性模型,其中,n个组件中有1个组件失败只移除总容量的1/n。利用相同体系结构支持任意数量的服务器:未来的数据中心将在大致100,000个服务器之间提供密集的内部通信。本系统允许有效的负载平衡和这么多的服务器之间的通信。信息存储和用于交换和负载平衡的消息接发随着服务器的数量线性地缩放。网络硬件和消息接发随着网络元件的数量以nxa0logxa0n缩放。如下面所说明的,本系统通过利用服务器的可编程性、带有标准路由和封装能力的交换机、以及交换机硬件中所实现的某一有用的数据平面原语来应付这些挑战。附图简述图1是数据中心的常规网络体系结构的图示。图2是示出了由没有过量预订链路的网络所连接的所有服务器的本系统的体系结构的概览的图示。图3是主机的网络栈的图示。图4是当数据分组从一个服务器流向同一个数据中心中的另一服务器时的数据分组处理的示例性图示。图5是跨因特网的连接的网络路径的图示。图6是连接103680个服务器的交换机的示例拓扑结构的图示。图7是示例互连拓扑的图示。图8是示例互连拓扑的图示。图9是使用144端口交换机双倍缩放互连拓扑的图示。详细描述现在将参考图2-9来说明本发明的系统。给定带有低于$100并降至$10的1Gbps端口、具有降至$1,000到$100的10Gbps端口、以及带有接近于标准化的40Gbps和100Gbps的商用交换硬件的可用性,正是重新设计数据中心网络基础结构的时候。下面提供了用于商品化用于“云”服务的数据中心的网络的系统,其中,大量的服务器协作地处理巨大的工作负载(例如,web搜索)。本发明的系统的特征包括:网格上的流量工程:在商用交换机的网格上使用Valiant(英勇)负载平衡(VLB),以实现热点空闲内核结构(hot-spotxa0freexa0corexa0fabric),该结构以不在意的方式支持任意流量模式(即,它适应由服务器接口卡准许的任何流量矩阵)。交换机的作用简化为快速转发,且缩放和控制中的许多复杂性被转移到服务器。扩展到巨大的层2域:数据分组在服务器之间使用平坦地址引导,以便任何服务器都可以使用任何地址,不管它在物理上连接到数据中心中的何处。如此处所使用的,平坦地址是只指示服务器或目的地的标识而不指示服务器或目的地被连接到网络上的位置的地址。平坦地址与在拓扑上有效的其他地址不同,在拓扑上有效意味着这些地址不仅标识服务器或目的地,而且还指示服务器或目的地连接到网络上的位置。网络对于服务器来说看来似乎是单个巨大的层2域,但是,可使用若干种技术,以便此域可以纵向扩展到10万个服务器或更多。解聚负载平衡功能:负载平衡被实现为数据分组转发的整体组成部分,以便可以使用一致散列来跨多个服务器地分散去往任何IP地址的流量。在下面的描述中,使用术语“数据分组”和“分组”来指由服务器所发送的以首部为开始的数据序列。首部可以是层2或者层3,而后面的数据可包括额外的首部。在下面的描述中,术语“路由器”和“交换机”可互换地使用,来指在至少一个端口上接收数据分组并作为响应将数据分组传输出一个或多个端口的组件。体系结构图2提供了根据本发明系统的体系结构200的概览。两个特征是将单个层2域中的数据中心内的所有100000个服务器连接在一起的网络和可在服务器池上分布请求的灵活方式。下面说明了该体系结构,后面是提供有关每一点的更多细节的小节。网络207被设计成具有完全可达性,而没有过量预订的链路,这意味着,任何服务器都可以以该服务器的网络接口的完全1Gbps速率与任何其他服务器进行通信。对于平坦地址空间的支持有效地支持在数据中心看到的移动性形式:通过注册新位置,图像或虚拟机从一个物理机器迁移到另一个物理机器。结果对于在层3-7操作的负载平衡器上的VIP/DIP和应用程序服务器上的安全策略而言是透明的。本系统的网络的层3部分使用等价多径(ECMP)来在所有边界路由器(BR)和访问路由器(AR)上均匀地分散从因特网202接收到的请求。随着请求进入层2域,访问路由器使用一致的散列来在充当目的VIP的负载平衡器的一组服务器206上均匀地分散请求。通过配置或交换机可编程性,可以使用加权多径而并非等价多径。最后,负载平衡器使用应用程序专用负载分布函数来在由其DIP所标识的实现应用程序功能的服务器210的池上分散请求。本系统的用于在一组服务器206分散发往一IP地址的数据分组的能力意味着,负载平衡器可以被解聚—即,从商用服务器代替专门的高吞吐量硬件来构建。随着所提供的负载开始淹没现有的负载平衡器,可以提供额外的服务器206来作为负载平衡器以稀释负载。另外,使用商用服务器作为负载平衡器可使它们能完全可编程,且其算法针对特定数据中心应用程序可调,而并非设法应付供应商在固件中所提供的算法。如在图2中所示,任何访问路由器、负载平衡器或服务器的失败不会对数据中心的功能造成长期危害。保健服务连续地监视每一服务器的活性,而当检测到服务器被从旋转池取出的问题时,不再向它发送新请求。(控制和管理平面实现都是可能的。参见,例如,M.Isard所著的“Autopilot:Automaticxa0dataxa0centerxa0managementxa0(自动导航:自动数据中心管理)”,其藉此通过引用整体结合于此)。可用的组件在设计本系统的数据中心网络时,由于两种原因,期望使用低成本的交换机。第一原因是经济因素。低成本的交换机会降低网络的总成本。第二原因是冗余模型。使用多个低成本的交换机能实现在失败的情况下适度降级的n+m冗余模型。尽管低成本交换机缺乏更昂贵的交换机或路由器的许多数据分组处理特征,但是,当前体系结构示出了具有以硬件实现的转发平面的但是带有可编程控制平面软件的交换机如何足以实现优美而性能好的设计。低成本的交换机具有影响数据中心网络的设计的下列特性。封装/解除封装机制:封装允许交换机在另一种数据分组内携带一种数据分组,且由最外面首部确定对数据分组的转发。解除封装允许接收发往其地址的已封装数据分组的该交换机移除最外面的首部,然后使用其正常转发规则—但是适用于下一最外面首部—来转发数据分组。如随后的小节所示,具有实现此基本要素的交换机是有价值的,因为它允许末端服务器上的软件编排复杂的网络行为,并且服务器软件可以比交换机上的软件更轻松地编写、修改和部署。低成本的交换机常常实现多个封装/解除封装机制。第一示例是IP中IP(IP-in-IP)封装(由评定要求文件2003进行定义,其藉此通过引用整体结合于此),其中IP数据分组被封装在另一个IP首部内。第二示例是VLAN封装,其中,数据分组被封装在包含VLAN标记的802.1首部内。第三示例是MAC中MAC(MAC-in-MAC)隧穿(在IEEExa0802.1ah中阐述,其藉此通过引用整体结合于此)定义了类似于IP中IP封装的层2。当交换机接收到发送到其自己的MAC地址的数据分组时,它移除最外面MAC首部,且如果里面有另一个MAC首部,则将数据分组转发到里面首部中的MAC目的地址。当今802.1ah是在“电信级以太网”交换机中实现的,但是可以预期会被广泛应用。受限的转发表大小:由于大型芯片上存储器的成本,低成本交换机常常具有小的转发表。例如,尽管一些交换机在其转发表中支持超过100Kxa0MAC条目,但是,绝大多数交换机只支持16000MAC个条目或12000个IP路由条目。由于是以带有100K个服务器的数据中心为目标,显然,不是每一个交换机都保留至每一服务器的路由。节点度:有各种节点度的低成本的交换机可用,如此,可以使用多种交换机。例如,将来自每一机架中的20个服务器的20个1Gbps链路聚合到2个10Gbps上行链路上的架顶式(top-of-rack:TOR)交换机。作为第二示例,带有10Gbps的144端口的“核心”交换机。这类交换机可从诸如Broadcom(广通)、Arastra(艾拉思塔)、Wovenxa0Systems(机织系统)、Fulcrumxa0Microsystems(支点微系统)、Nortel(北电),以及Extreme(极进)之类的供应商处购得。服务器到服务器转发在数据中心中的服务器之间转发数据分组的能力是本系统的基本方面,其他功能被构建于其上。在提供转发时有三个主要问题要解决。转发可缩放性:本系统必须使用由每一交换机只能存储16000个转发条目的诸交换机构成的网络来连接100000个服务器。本系统不允许交换机看见每一服务器的目的地址。本发明的系统的解决方案是让发送方服务器将其数据分组封装到目的地的架顶式交换机,以使得交换机只需存储其他交换机以及它们自己直接连接的服务器的转发条目。可以有多种实施例。在一个实施例中,由服务器所发送的L2数据分组被封装在MAC中MAC数据分组内。在另一实施例中,由服务器所发送的L3数据分组被封装在IP中IP数据分组内。在更进一步的实施例中,数据分组可以被封装在VLAN或Q中Q(VLAN中的VLAN)中。应该理解,“架顶式交换机”被用来描述服务器所连接的交换机。此交换机常常与服务器位于同一机架上,但是,交换机的位置并非重要的,且在需要时,可以将它安置到数据中心中的别处,或与服务器集成到一个包中(如在刀片式服务器配置中那样,其中,一个包包括由交换机连接的多个服务器或中央处理单元)。ARP可缩放性:目标是创建支持平坦地址并连接所有服务器的单个大型层2域。如上文所描述的,常规设计的一个失败在于,每一服务器使用地址解析协议(ARP)来解析它希望与其进行通信的其他服务器的地址。ARP协议所使用的广播数据分组导致无法接受的开销,其将层2域的大小限制成远比所希望的服务器的数量(例如,100000个服务器)小。本发明的系统的解决方案是在由服务器所生成的ARP数据分组离开服务器之前截取它们,并替代地向目录服务发送请求。目录服务返回发送方服务器必须使用的地址(例如,目的服务器的MAC或IP地址,和/或目的地服务器所连接到的架顶式交换机,和/或一个或多个中间交换机的MAC或IP地址)。流量工程:在不知道应用程序将运行的流量模式的情况下,本系统必须支持任何流量矩阵,其中,没有服务器被要求发送或接收比其网络接口所允许的1Gbps更多的流量(被称为软管流量模型。参见N.G.Duffield、P.Goyal、A.G.Greenberg、P.P.Mishra、K.K.Ramakrishnan,以及J.E.vanxa0derxa0Merwe所著的“Axa0flexiblexa0modelxa0forxa0resourcexa0managementxa0inxa0virtualxa0privatexa0network(用于虚拟专用网络中的资源管理的柔性模型)”,其藉此通过引用整体结合于此)。本发明的系统的解决方案是使用Valiant负载平衡(VLB),这是已知的处理服从软管模型的任意流量波动的不在意路由策略(obliviousxa0routingxa0strategy)。参见由M.Kodialam、T.V.Lakshman、J.B.Orlin,以及S.Sengupta所著的“Axa0Versatilexa0Schemexa0forxa0Routingxa0Highlyxa0Variablexa0Trafficxa0inxa0Servicexa0Overlaysxa0andxa0IPxa0Backbo
nes(用于在服务冠带层和IP主干中路由高度可变流量的通用方案)”和由R.Zhang-Shen和N.McKeown所著的“Designingxa0axa0Predictablexa0Internetxa0Backbonexa0Network(设计可预测因特网主干网)”,在此引用了这两个文件的全部内容作为参考。VLB要求跨网络发送的每一数据分组在被转发到其目的地之前首先从随机选择的中间交换机“弹出”。本发明的系统通过向数据分组添加将这些数据分组送往随机选择的交换机的附加封装首部来来实现VLB。通过使用拥塞控制机制(例如,IP网络中的TCP或以太网中的QCN),将任意提供的流量需求转换为接近于软管模型下可容许的负载的流量矩阵负载—从网络边缘处的端口发送出或进入其的流量不超过端口速度。拥塞控制、VLB,以及适当的交换机拓扑组合起来确保均匀的高吞吐量。负载分散:在构建数据中心应用程序时,能够跨一组服务器分散请求常常是有用的。本系统的解决方案是支持负载分散作为基本转发的一部分。每当本系统将数据分组发送到IP地址I时,已准备好将该IPxa0I地址解析为MAC或IP地址列表,这些地址与其他服务器相关联,这些其他服务器中的每一个都适用于处理最初由应用程序发送到IP地址I的数据分组。在此情况下,发送方可以使用一致的散列来选择向其发送数据分组的地址。总的来说,这些解决方案能在例如使用带有小的转发表的交换机的同时实现带有VLB的流量不在意属性的大型层2域。由单个IP地址解析为多个地址的能力所产生的网络的负载分散能力,意味着,负载平衡可以使用服务器本身来实现,而无需专门的负载平衡硬件。从目录获取路径信息当在服务器210上运行的应用程序将要发送到一IP地址的数据分组呈现给其网络栈时,服务器在它可以创建并发送数据分组之前需要两个信息片段。如上所述,它必须具有负责处理该IP地址的服务器的地址列表,以及其中那些服务器中的每一个所连接到的架顶式交换机的地址。它还需要交换机地址列表,它将从该列表中随机挑选要从其“弹出”数据分组的交换机。服务器从由本系统所维护的目录服务获取这些信息片段。下面将讲述藉由其利用数据填充目录服务的手段。图3示出了本系统中的服务器210的网络栈300。传统ARP实现已经被禁用,并被替换为可以在用户或内核模式下运行的进程,简称为代理302,并且已添加了新的虚拟接口,叫做封装器306,来封装传出分组。这些变化对应用程序是完全透明的。当封装器306从IP网络栈接收数据分组时,它计算数据分组的流id,并检查其活动流的缓存,以查找匹配条目。如果没有条目,则将数据分组列入队列,并向代理302发送请求,以使用目录服务查找远程IP。一旦目录服务返回IP地址解析到的地址、那些服务器所连接到的架顶式交换机的地址、以及一组要使用的VLB中间交换机,封装器306就选择目的地址(以及其相对应的架顶式交换机地址)以及该流的VLB中间节点,并高速缓存此映射。服务器可以为每一流选择不同中间节点,如此,在所有VLB中间节点之间分散其负载,而不导致TCP数据分组重排序。如果目录服务将一远程IP地址映射到地址列表,则服务器将为到该远程IP的每一个流选择不同地址,从而实现负载分散。利用来自流高速缓存中的条目中的信息,封装和转发数据分组是直接的。图4示出了如何利用三个首部传送IP数据分组400。最外面首部402将所选中间节点(N)作为目的地,中间首部404将目标架顶式交换机(TD)作为目的地,而最里边首部406具有最终目的地的地址(D)。应该理解,可以使用各种首部封装协议,包括MAC、VLAN或IP。发送方服务器的架顶式交换机(TS)将数据分组转发到VLB中间节点,该VLB中间节点在接收到数据分组之际移除外部首部,并将数据分组转发到目的地的架顶式交换机。该过程重复,且架顶式交换机将带有单个首部的普通以太网数据分组转发到目的服务器。诸如SEIZE之类的现有工作(参见C.Kim、M.Caesar,以及J.Rexford所著的“Buildingxa0scalablexa0self-configuringxa0networksxa0withxa0SEIZE(构建具有SEIZE的可缩放自配置网络)”,在此引用该文的全部内容作为参考)还使用中间交换机“弹出”流量。然而,本系统和SEIZE之间的主要区别在于,SEIZE通过相同中间节点将所有流量路由到给定目的地,而本系统跨所有可用的中间节点分散流量以获得VLB的优点。外部连接图5示出了在数据中心的外面起源或终止的连接的网络路径。外部流量通过边界路由器(BR)进入和退出数据中心。边界路由器通过层3等价多径(ECMP)路由配置连接到一组访问路由器(AR)。如上文所描述的,通过经由本系统的目录服务的地址解析和源处的以太网数据分组的封装,在数据中心内路由流量。由于访问路由器可能不被修改以执行源路由,所有外部流量都可以通过充当到数据中心的网关的叫做“进入服务器”的特殊服务器502来路由。每一进入服务器都具有两个网络接口—一个直接连接到访问路由器,而另一个经由架顶式交换机连接到数据中心网络。对于来自因特网的数据分组,进入服务器502从访问路由器获取数据分组,使用本系统的目录服务解析内部IP,并使用前面所描述的相同服务器到服务器的转发机制来在数据中心内转发流量。目录服务将层2域的默认网关的IP地址映射到进入服务器的MAC地址,因此向因特网前进的数据分组通过它们流入到访问路由器。在一替换实施例中,进入服务器可以具有一个网络接口,且该接口连接到架顶式交换机。负载平衡许多数据中心应用程序要求在服务器池上分发工作的能力。在某些情况下,工作发源于因特网中的客户机,在其他情况下,发源自数据中心内的服务器。本系统提供支持最常见类型的工作分发的机制。负载分散:当目标是将请求均匀地分散在服务器池上并且服务器应该将客户机的IP地址看作请求的源地址时,由根据本系统的服务器到服务器转发机制所提供的负载分散基本要素是足够的。该池中的所有服务器都将配置有与该池相关联的VIP以及它们自己的IP地址。然后,目录服务将维护与VIP相关联的池中的所有服务器的地址。响应于对VIP的给定请求,将使用一致的散列来为每一个请求挑选服务器。负载平衡:当目标是在实际服务器前面放置中间盒时,本系统可以使用如图2所示的方法。VIP被配置到所有中间盒上,导致进入服务器使用上文所描述的一致的散列和负载分散方法来跨中间盒均匀地分散请求。通过以此方式跨多个中间盒分散负载,本系统支持N+1故障转移配置,与常规体系结构所使用的1+1故障转移配置相反。中间盒自由地实现应用程序所希望的任何功能。例如,中间盒可以实现负载平衡器,该负载平衡器重写源和目的IP地址以使用某种工作负载或请求敏感的逻辑来在第二服务器池上分散请求,或者,它可以进行深数据分组检查,以在将请求发送到应用程序服务器之前证实请求。作为另一个示例,中间盒可以结束传入TCP连接,并解密它们中所包含的SSL连接,从而,从应用程序服务器卸载工作。此示例还示出了负载分散为什么必须使用一致的散列-ECMP可以将数据分组(为相同TCP连接的一部分)送往多个不同的访问路由器和进入服务器。可是,所有那些数据分组最终被发送到同一个中间盒是关键的,一致的散列将确保此发生。作为一致的散列的替代方案是节点之间的每流态(per-flowxa0state)同步。交换机拓扑结构有许多可用来将构成层2域的交换机连接起来的物理拓扑,但是,本节提供了将≈100000服务器互连并特别适用于Valiant负载平衡的拓扑的一个具体示例。如图6所示,每一架顶式交换机602在网络一侧具有2个10Gbps端口,这些端口连接到两个不同核心进入-外出交换机604,以便容错。在一个实施例中,有n
1=144个这样的进入-外出交换机604。这些进入-外出交换机在它们之间没有链路,但是,它们中的每一个都通过10Gbps端口连接到每一中间交换机602,中间交换机602有n
2=72个。此拓扑结构是克洛斯(clos)网络的修改,并特别适用于VLB,因为它向由流占据的路径添加最小的延伸(额外的跳跃)。此外,每一流都可以从同一组交换机602中选择其要弹出的中间交换机602。控制平面本系统的控制平面具有至少两个职责:第一,在交换机中维护转发表;第二,操作跟踪每一服务器用来连接到网络的端口,以及服务器的IP和MAC地址的目录服务。架顶式交换机可以被编程以跟踪直接连接到它们的服务器的IP和MAC地址,并在链路状态广告(LSA)中宣告此信息。替换地,向数据中心应用程序指派服务器的供应系统可以在其指定它们时记录每一服务器的MAC地址、IP地址,以及TOR。维护转发表:如上文所阐述的,本系统要求每一交换机都具有带有每个其他交换机的条目的转发表。可以使用可以计算数据中心中的大致5K个交换机之间的路由的任何技术。在一个可能的实施例中,交换机在它们本身之间运行链路状态路由协议。在一替换实施例中,可以基于4D体系结构使用在逻辑上集中的路由,以计算交换机的转发表,并响应于失败根据需要重新计算表。超正方体(参见H.Yan、D.A.Maltz、T.S.E.Ng、H.Gogineni、H.Zhang,以及Z.Cai所著的Tesseract:Axa04Dxa0networkxa0controlxa0plane(超正方体:4D网络控制平面),在此引用该文的全部内容作为参考)表明,使用判决元件所实现的集中式控制轻松地缩放以管理1000个交换机,如此,可以计算100000个服务器数据中心中的大致5000个交换机的路由。为消除由广播流量所引起的缩放问题,交换机可以被编程为将没有转发条目的任何数据分组转发到判决元件。这会诱捕服务器可能发送的任何广播数据分组(例如,DHCP请求),并允许判决元件决定如何处理它。为防止透明学习算法改变由判决元件所产生的转发表,可以禁用交换机上的学习。在一替换实施例中,可以使用交换机上其他代理来截取并转发广播流量。例如,可以使用交换机上的DHCP中继代理来将DHCP请求转发到DHCP服务器。在又一实施例中,每一服务器上的代理可以截取服务器尝试发送的广播或多播数据分组,并将这些数据分组重定向到判决元件或目录服务器供进行处理。维护目录服务:有许多用于实现本系统所需的目录服务的方式,但是一个这样的方法如下:运行控制平面的判决元件提供一目录服务,该目录服务将服务器的IP地址映射到(服务器地址、架顶式交换机地址)元组的列表和中间节点地址的列表。此设计实现起来简单,因为填充目录服务所需的大部分信息来自从架顶式交换机中获取的LSA,并已经可为判决元件所用。然而,当服务器崩溃时,在LSA更新以及从目录服务中移除服务器之前可能要花费一些时间。大多数数据中心应用程序已经提供监视服务器的保健服务(例如,AutoPilot(自动导航),参见由M.Isard所著的“Autopilot:Automaticxa0dataxa0centerxa0management(自动导航:自动数据中心管理)”,在此引用该文的全部内容作为参考),且本系统利用此保健服务来从跨其上对请求进行负载平衡的服务器的池中快速地移除失败的服务器。在一替换实施例中,目录服务是通过不直接参与网络控制平面的操作的服务器来实现的。在此实施例中,作为供应过程、配置过程的一部分,或经由服务器向DHCP系统的注册,将IP地址、架顶式交换机地址和中间交换机地址之间的映射通知给服务器。也可以使用目录服务来通过禁止由某一服务器对某一IP地址的解析,来实现安全策略(例如,用于将应用程序彼此隔离)。给定新兴的云服务数据中心的规模、成本和重要性,重新考虑其网络的组件和总体体系结构是网络社区的责任。这些数据中心的组件包括:非常低的价格点的带有吉比特速度网络端口的强大的多核服务器;自动化几十万个服务器和交换机的配置和管理的分布式系统;并且所有这些都在单个组织的控制下。这些因素一起打开了对数据中心内部的服务器和交换机进行基础改变的机会,但仍维护外部IP接口。令人遗憾的是,流行的数据中心网络体系结构(图1)不足以实现这些组件的完全优点。具体而言,在当今的云服务数据中心,网络和服务器容量被分段,且二等分带宽低于聚合服务器带宽一到两个数量级。在本系统中,提供了利用新兴的数据中心组件的能力的网络设计。利用将网络功能置于主机的能力来在商用服务器上实现解聚的可缩放负载平衡,以及附属的网络健康监测和目录服务。利用如此重构的功能,控制平面和数据平面可以被扩展以支持在数据中心中的所有服务器之间提供全带宽的巨大的层2交换域。数据中心互连和流量工程的一个重要设计目标是为了在受服务器线卡进入/外出约束(当前是1Gbps)的数据中心中的所有服务器之间支持任意流量模式。这意味着,在任何给定时间在任何服务器对之间都可能存在并发流,只要进入或退出服务器的总流量至多是1Gbps。也称为软管流量模型的此流量波动模型(参见N.G.Duffield、P.Goyal、A.G.Greenberg、P.P.Mishra、K.K.Ramakrishnan,以及J.E.vanxa0derxa0Merwe所著的“Axa0flexiblexa0modelxa0forxa0resourcexa0managementxa0inxa0virtualxa0privatexa0networks(用于虚拟专用网络中的资源管理的柔性模型)”,在此引用该文的全部内容作为参考),在ISP主干网设计的上下文中的文献里已经被考虑(例如,指定虚拟专用网络(VPN)的流量要求)。为在软管模型中路由流量,此处阐述了某些具体互连拓扑,这些互连拓扑考虑了交换机端口数连同保证软管流量的吞吐量而无需实时测量流量或响应于它而重新配置网络的不在意路由策略。本设计使用简单的网格类体系结构、商用交换机、对控制平面的修改,以控制协议开销(例如,来自ARP)以及通过多径路由来支持灵活的流量工程(参见SLAM期刊之计算(SIAMxa0Journalxa0onxa0Computing)中由L.G.Valiant所著的“Axa0schemexa0forxa0fastxa0parallelxa0communication(用于快速并行通信的方案)”,在此引用该文的全部内容作为参考)。它将负载平衡的功能解聚为一组常规服务器,结果,负载平衡服务器硬件可以在数据中心中的机架之间分布,导致更大的灵活性和较少的分段。该体系结构创建巨大且灵活的层2交换域,从而支持任何服务器/任何服务、全网格灵活性、以及低成本下的未分段的服务器容量。互连拓扑构造下面的构造通过较小的交换节点的互连产生极高吞吐量的网络。该构造提供非常高的灵活性和非常高的效率—意味着,该结构允许从任何节点到任何其他节点发生高速度传输,而不管节点位置如何。此外,任何服务都可以在任何节点上得到支持,并且该服务可以动态地迁移到其他节点。这些构造的有利属性包括:·支持全速率下的任意流量混合和矩阵。具体而言,可以使用n节点结构来支持任何流量矩阵T,其中∑
jT
i,ji并且∑iTi,jj,其中,Ti,j是多个节点中从节点i到节点j的需求,ci是节点i可以成功地发送流量的最高速率,dj是节点j可以成功地接收流量的最高速率。·支持广泛的节点和链路失败集,并且对于存活的结构影响小且服务带宽适度退化—通过自适应调整路由方案或(重新)随机化对目的地服务器、架顶式交换机或者中间交换机的地址选择的动作。·支持多路径路由—要么通过随机或基于散列的负载分散机制,要么通过流量工程机制。·支持TCP友好行为,这意味着分组重新排序事件是罕见的。·支持使流量出入交换机结构。·支持跨任意节点组对流量进行负载平衡。·自动化网络和系统管理的集成。构件是至少两种类型的节点:·类型1:度d1,速度s1(即,d1双向端口,且每一端口在每一方向以速度s1运行)。·类型2:度d2,速度s2(即,d2双向端口,且每一端口在每一方向以速度s2运行)。一般而言,类型i:度di,速度si(即,di双向端口,且每一端口在每一方向以速度si运行)。假设类型1节点提供访问;即,到源和到接收器的流量—这些具有访问侧上以访问速度运行的某一数量p的端口。假设类型2(或更高)节点充当类型1节点之间的中转。在由类型1和类型2节点构成的网络中,可以使用多种路由算法中的任何一种。可以使用的三种类型的路由算法为:·最短路径转发(SPF):节点i到节点j之间的路由沿着给定的与链路相关联的度量下从i到j的最短路径。·Valiant负载平衡(VLB):节点i到节点j之间的路由是通过首先确定中间节点k然后路由i到k接下来经由k到j来选择的。为可证明地获得高吞吐量,将从i到j的流量分散到大量的路径上是有利的。因此,可以通过通信流id(TCP/IP首部的非易失性分量)的伪随机散列来选择k。可以使用SPF来从i路由到k,并从k到j。到不同中间节点k的流量分割比可以相等或不相等。·流量工程(TE):可以通过考虑流量矩阵和网络拓扑(例如,通过测量),以及优化过程中的一个来选择路由,以便在沿着从i到j的路径的每一节点对i,j之间分割流量。这可以例如通过产生不必取最短路径的路由的优化(例如,多商用流优化)来完成,或者替换地,通过调整SPF权重和使用SPF。假设有n1个类型1节点和n2个类型2节点,如此,总共有n=n1+n2个节点。可以按如下方式陈述参数之间的关系:该结构按如下方式工作。两个节点类型可以被视为在逻辑上排列成圆。(此圆与物理布局毫无关系—它只是用于描述如何在网络中放置边缘的方便设计。物理布局是任意的。)按如下方式在节点之间添加链路:1.将每一个节点连接到节点i-1以及i+1模n。2.绕着圆以n/(d1-2)位置间隔增量,将每一个节点连接到其他节点(模n)。这在两种类型的每一个节点处使用度d1,并消耗类型1节点的所有链路。3.重复步骤2,只考虑类型2节点的较小嵌入环,并绕着圆以n2/(d2-d1)位置间隔增量,将每一类型2节点连接到其他类型2节点(模n2)。这消耗类型2节点的所有链路。步骤1、2被概括为在第一层中使用任何d1-正则(连接的)图拓扑结构。其他具体示例包括:(i)绕着圆在任一方向上将每一个节点连接到节点直到d1/2位置,(ii)如果节点的数量是d1次幂,则为(d1/2)维环形。类似地,步骤3被概况为类型2节点之间的互连。在所有链路都是两部分(在类型(1)和类型(2)之间)的情况下,可以使用结构的变化。这导致下面参考图8所描述的第二示例中的优化的VLB互连。在该示例中,还提供了对类型(1)和类型(2)交换机使用144端口交换机的版本。作为第二示例的变体的图9的第三示例允许纵向扩展到200000个服务器来进行互连。一种考虑该结构的方便方式在于,首先在维度d1的正则2维栅格中嵌入(随机地或有规则地)n个节点,然后,在维度d2-d1的另一个正则2维栅格中嵌入(也是随机地或有规则地)类型2节点。类型2节点提供通过原始栅格的“捷径”。栅格可被创建成具有相当大的增长灵活性——通过在嵌入中保留孔,以及经由通过更大的度d1′和d2′(d1类型(1)交换机(连接到TOR-A)->类型(2)交换机->类型(1)交换机(连接到TOR-B)->TOR-B。在概念上,在给定TOR处进入网络的流以比率1/n2=1/72被分割到每一中间节点类型(2)交换机。可以验证,当每一服务器线卡准许流量以1G的全线速率进入/外出时,这样的分割比导致网络中的所有10G链路完全被利用。为防止数据分组重排序(以及其对TCP性能的潜在影响),每一流都可以被散列到中间节点(例如,基于5元组流标识符)。为隐藏核心网络中的服务器地址,并实现如上的两阶段路由,使用两级的封装/隧穿(参见,例如,RFCxa02003或IEEExa0802.1ah标准,http://www.ieee802.org/1/pages/802.1ah.html,在此引用了该文的全部内容作为参考)来在核心网络中转发数据分组。前面的对本发明的详细描述只是为了说明和描述。它不是详尽的说明或将本发明限于所公开的准确的形式。鉴于上述教导,许多修改和变型都是可能的。所描述的实施例只是为了最好地说明本发明的原理以及其实际应用,从而使精通本技术的其他人在各种实施例中最佳地利用本发明,适合于特定用途的各种修改也是可以的。本发明的范围由所附的权利要求进行定义。